{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Requirement already satisfied: langchain_nvidia_ai_endpoints in c:\\users\\chenj\\miniconda3\\envs\\work\\lib\\site-packages (0.2.0)\n",
      "Requirement already satisfied: aiohttp<4.0.0,>=3.9.1 in c:\\users\\chenj\\miniconda3\\envs\\work\\lib\\site-packages (from langchain_nvidia_ai_endpoints) (3.9.3)\n",
      "Requirement already satisfied: langchain-community<0.3.0,>=0.2.5 in c:\\users\\chenj\\miniconda3\\envs\\work\\lib\\site-packages (from langchain_nvidia_ai_endpoints) (0.2.10)\n",
      "Requirement already satisfied: langchain-core<0.3,>=0.1.47 in c:\\users\\chenj\\miniconda3\\envs\\work\\lib\\site-packages (from langchain_nvidia_ai_endpoints) (0.2.23)\n",
      "Requirement already satisfied: pillow<11.0.0,>=10.0.0 in c:\\users\\chenj\\miniconda3\\envs\\work\\lib\\site-packages (from langchain_nvidia_ai_endpoints) (10.2.0)\n",
      "Requirement already satisfied: aiosignal>=1.1.2 in c:\\users\\chenj\\miniconda3\\envs\\work\\lib\\site-packages (from aiohttp<4.0.0,>=3.9.1->langchain_nvidia_ai_endpoints) (1.3.1)\n",
      "Requirement already satisfied: attrs>=17.3.0 in c:\\users\\chenj\\miniconda3\\envs\\work\\lib\\site-packages (from aiohttp<4.0.0,>=3.9.1->langchain_nvidia_ai_endpoints) (23.2.0)\n",
      "Requirement already satisfied: frozenlist>=1.1.1 in c:\\users\\chenj\\miniconda3\\envs\\work\\lib\\site-packages (from aiohttp<4.0.0,>=3.9.1->langchain_nvidia_ai_endpoints) (1.4.1)\n",
      "Requirement already satisfied: multidict<7.0,>=4.5 in c:\\users\\chenj\\miniconda3\\envs\\work\\lib\\site-packages (from aiohttp<4.0.0,>=3.9.1->langchain_nvidia_ai_endpoints) (6.0.5)\n",
      "Requirement already satisfied: yarl<2.0,>=1.0 in c:\\users\\chenj\\miniconda3\\envs\\work\\lib\\site-packages (from aiohttp<4.0.0,>=3.9.1->langchain_nvidia_ai_endpoints) (1.9.4)\n",
      "Requirement already satisfied: PyYAML>=5.3 in c:\\users\\chenj\\miniconda3\\envs\\work\\lib\\site-packages (from langchain-community<0.3.0,>=0.2.5->langchain_nvidia_ai_endpoints) (6.0.1)\n",
      "Requirement already satisfied: SQLAlchemy<3,>=1.4 in c:\\users\\chenj\\miniconda3\\envs\\work\\lib\\site-packages (from langchain-community<0.3.0,>=0.2.5->langchain_nvidia_ai_endpoints) (2.0.29)\n",
      "Requirement already satisfied: dataclasses-json<0.7,>=0.5.7 in c:\\users\\chenj\\miniconda3\\envs\\work\\lib\\site-packages (from langchain-community<0.3.0,>=0.2.5->langchain_nvidia_ai_endpoints) (0.6.4)\n",
      "Requirement already satisfied: langchain<0.3.0,>=0.2.9 in c:\\users\\chenj\\miniconda3\\envs\\work\\lib\\site-packages (from langchain-community<0.3.0,>=0.2.5->langchain_nvidia_ai_endpoints) (0.2.11)\n",
      "Requirement already satisfied: langsmith<0.2.0,>=0.1.0 in c:\\users\\chenj\\miniconda3\\envs\\work\\lib\\site-packages (from langchain-community<0.3.0,>=0.2.5->langchain_nvidia_ai_endpoints) (0.1.92)\n",
      "Requirement already satisfied: numpy<2,>=1 in c:\\users\\chenj\\miniconda3\\envs\\work\\lib\\site-packages (from langchain-community<0.3.0,>=0.2.5->langchain_nvidia_ai_endpoints) (1.26.4)\n",
      "Requirement already satisfied: requests<3,>=2 in c:\\users\\chenj\\miniconda3\\envs\\work\\lib\\site-packages (from langchain-community<0.3.0,>=0.2.5->langchain_nvidia_ai_endpoints) (2.31.0)\n",
      "Requirement already satisfied: tenacity!=8.4.0,<9.0.0,>=8.1.0 in c:\\users\\chenj\\miniconda3\\envs\\work\\lib\\site-packages (from langchain-community<0.3.0,>=0.2.5->langchain_nvidia_ai_endpoints) (8.5.0)\n",
      "Requirement already satisfied: jsonpatch<2.0,>=1.33 in c:\\users\\chenj\\miniconda3\\envs\\work\\lib\\site-packages (from langchain-core<0.3,>=0.1.47->langchain_nvidia_ai_endpoints) (1.33)\n",
      "Requirement already satisfied: packaging<25,>=23.2 in c:\\users\\chenj\\miniconda3\\envs\\work\\lib\\site-packages (from langchain-core<0.3,>=0.1.47->langchain_nvidia_ai_endpoints) (23.2)\n",
      "Requirement already satisfied: pydantic<3,>=1 in c:\\users\\chenj\\miniconda3\\envs\\work\\lib\\site-packages (from langchain-core<0.3,>=0.1.47->langchain_nvidia_ai_endpoints) (2.6.3)\n",
      "Requirement already satisfied: marshmallow<4.0.0,>=3.18.0 in c:\\users\\chenj\\miniconda3\\envs\\work\\lib\\site-packages (from dataclasses-json<0.7,>=0.5.7->langchain-community<0.3.0,>=0.2.5->langchain_nvidia_ai_endpoints) (3.21.1)\n",
      "Requirement already satisfied: typing-inspect<1,>=0.4.0 in c:\\users\\chenj\\miniconda3\\envs\\work\\lib\\site-packages (from dataclasses-json<0.7,>=0.5.7->langchain-community<0.3.0,>=0.2.5->langchain_nvidia_ai_endpoints) (0.9.0)\n",
      "Requirement already satisfied: jsonpointer>=1.9 in c:\\users\\chenj\\miniconda3\\envs\\work\\lib\\site-packages (from jsonpatch<2.0,>=1.33->langchain-core<0.3,>=0.1.47->langchain_nvidia_ai_endpoints) (2.4)\n",
      "Requirement already satisfied: langchain-text-splitters<0.3.0,>=0.2.0 in c:\\users\\chenj\\miniconda3\\envs\\work\\lib\\site-packages (from langchain<0.3.0,>=0.2.9->langchain-community<0.3.0,>=0.2.5->langchain_nvidia_ai_endpoints) (0.2.2)\n",
      "Requirement already satisfied: orjson<4.0.0,>=3.9.14 in c:\\users\\chenj\\miniconda3\\envs\\work\\lib\\site-packages (from langsmith<0.2.0,>=0.1.0->langchain-community<0.3.0,>=0.2.5->langchain_nvidia_ai_endpoints) (3.10.1)\n",
      "Requirement already satisfied: annotated-types>=0.4.0 in c:\\users\\chenj\\miniconda3\\envs\\work\\lib\\site-packages (from pydantic<3,>=1->langchain-core<0.3,>=0.1.47->langchain_nvidia_ai_endpoints) (0.6.0)\n",
      "Requirement already satisfied: pydantic-core==2.16.3 in c:\\users\\chenj\\miniconda3\\envs\\work\\lib\\site-packages (from pydantic<3,>=1->langchain-core<0.3,>=0.1.47->langchain_nvidia_ai_endpoints) (2.16.3)\n",
      "Requirement already satisfied: typing-extensions>=4.6.1 in c:\\users\\chenj\\miniconda3\\envs\\work\\lib\\site-packages (from pydantic<3,>=1->langchain-core<0.3,>=0.1.47->langchain_nvidia_ai_endpoints) (4.12.2)\n",
      "Requirement already satisfied: charset-normalizer<4,>=2 in c:\\users\\chenj\\miniconda3\\envs\\work\\lib\\site-packages (from requests<3,>=2->langchain-community<0.3.0,>=0.2.5->langchain_nvidia_ai_endpoints) (3.3.2)\n",
      "Requirement already satisfied: idna<4,>=2.5 in c:\\users\\chenj\\miniconda3\\envs\\work\\lib\\site-packages (from requests<3,>=2->langchain-community<0.3.0,>=0.2.5->langchain_nvidia_ai_endpoints) (3.6)\n",
      "Requirement already satisfied: urllib3<3,>=1.21.1 in c:\\users\\chenj\\miniconda3\\envs\\work\\lib\\site-packages (from requests<3,>=2->langchain-community<0.3.0,>=0.2.5->langchain_nvidia_ai_endpoints) (2.2.1)\n",
      "Requirement already satisfied: certifi>=2017.4.17 in c:\\users\\chenj\\miniconda3\\envs\\work\\lib\\site-packages (from requests<3,>=2->langchain-community<0.3.0,>=0.2.5->langchain_nvidia_ai_endpoints) (2024.2.2)\n",
      "Requirement already satisfied: greenlet!=0.4.17 in c:\\users\\chenj\\miniconda3\\envs\\work\\lib\\site-packages (from SQLAlchemy<3,>=1.4->langchain-community<0.3.0,>=0.2.5->langchain_nvidia_ai_endpoints) (3.0.3)\n",
      "Requirement already satisfied: mypy-extensions>=0.3.0 in c:\\users\\chenj\\miniconda3\\envs\\work\\lib\\site-packages (from typing-inspect<1,>=0.4.0->dataclasses-json<0.7,>=0.5.7->langchain-community<0.3.0,>=0.2.5->langchain_nvidia_ai_endpoints) (1.0.0)\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\n",
      "[notice] A new release of pip is available: 24.1.2 -> 24.2\n",
      "[notice] To update, run: python.exe -m pip install --upgrade pip\n"
     ]
    }
   ],
   "source": [
    "# Use pip to install the langchain_nvidia_ai_endpoints package\n",
    "# The -U flag ensures that the package is upgraded to the latest version if it's already installed\n",
    "!pip install langchain_nvidia_ai_endpoints -U"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Import the ChatNVIDIA class from the langchain_nvidia_ai_endpoints package\n",
    "from langchain_nvidia_ai_endpoints import ChatNVIDIA\n",
    "\n",
    "# Import the getpass module to securely handle password inputs\n",
    "import getpass\n",
    "\n",
    "# Import the os module to interact with the operating system\n",
    "import os\n",
    "\n",
    "# Import the base64 module to encode and decode data in base64 format\n",
    "import base64\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Check if the environment variable \"NVIDIA_API_KEY\" is not set\n",
    "if not os.getenv(\"NVIDIA_API_KEY\"):\n",
    "    # Prompt the user to enter their NVIDIA API key securely\n",
    "    # Note: the API key should start with \"nvapi-\"\n",
    "    os.environ[\"NVIDIA_API_KEY\"] = getpass.getpass(\"Enter your NVIDIA API key: \")\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Define the model to be used with the ChatNVIDIA class\n",
    "model = 'microsoft/phi-3-vision-128k-instruct'\n",
    "\n",
    "# Create an instance of the ChatNVIDIA class with the specified model\n",
    "chat = ChatNVIDIA(model=model)\n",
    "\n",
    "# Specify the path to the image file to be used\n",
    "img_path = './imgs/demo.png'\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Define the text prompt for generating Python code\n",
    "text = \"Please create Python code for image, and use plt to save the new picture under imgs/ and name it phi-3-vision.jpg.\"\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Open the image file specified by img_path in binary read mode\n",
    "with open(img_path, \"rb\") as f:\n",
    "    # Read the file and encode its contents to base64\n",
    "    image_b64 = base64.b64encode(f.read()).decode()\n",
    "\n",
    "# Create an HTML image tag with the base64-encoded image data\n",
    "image = f'<img src=\"data:image/png;base64,{image_b64}\" />'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Combine the text prompt and the HTML image tag into a single string\n",
    "# The f-string format is used to insert the values of text and image into the prompt\n",
    "prompt = f\"{text} {image}\"\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "To create a pie chart from the given data and save it as a JPG image, you can use the following Python code with matplotlib:\n",
      "\n",
      "\n",
      "```python\n",
      "\n",
      "import matplotlib.pyplot as plt\n",
      "\n",
      "\n",
      "# Data to plot\n",
      "\n",
      "labels = 'physics', 'chemistry', 'english', 'maths'\n",
      "\n",
      "sizes = [25, 20, 15, 30]\n",
      "\n",
      "colors = ['red', 'yellow', 'cyan', 'magenta']\n",
      "\n",
      "\n",
      "# Plot\n",
      "\n",
      "fig1, ax1 = plt.subplots()\n",
      "\n",
      "ax1.pie(sizes, labels=labels, autopct='%1.1f%%', startangle=140, colors=colors)\n",
      "\n",
      "ax1.axis('equal')  # Equal aspect ratio ensures that pie is drawn as a circle.\n",
      "\n",
      "\n",
      "# Title and style\n",
      "\n",
      "plt.title('Marks obtained in an exam', pad=20)\n",
      "\n",
      "\n",
      "# Save the figure\n",
      "\n",
      "plt.savefig('imgs/phi-3-vision.jpg', format='jpg', bbox_inches='tight')\n",
      "\n",
      "```\n",
      "\n",
      "\n",
      "This code will create a pie chart with the given data, set the title, and save the figure as 'imgs/phi-3-vision.jpg'."
     ]
    }
   ],
   "source": [
    "# Initialize an empty string to store the generated code\n",
    "code = \"\"\n",
    "\n",
    "# Iterate over the chunks of the response from the chat model\n",
    "for chunk in chat.stream(prompt):\n",
    "    # Print each chunk's content without adding a newline at the end\n",
    "    print(chunk.content, end=\"\")\n",
    "    # Append each chunk's content to the code string\n",
    "    code += chunk.content\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "\"To create a pie chart from the given data and save it as a JPG image, you can use the following Python code with matplotlib:\\n\\n\\n```python\\n\\nimport matplotlib.pyplot as plt\\n\\n\\n# Data to plot\\n\\nlabels = 'physics', 'chemistry', 'english', 'maths'\\n\\nsizes = [25, 20, 15, 30]\\n\\ncolors = ['red', 'yellow', 'cyan', 'magenta']\\n\\n\\n# Plot\\n\\nfig1, ax1 = plt.subplots()\\n\\nax1.pie(sizes, labels=labels, autopct='%1.1f%%', startangle=140, colors=colors)\\n\\nax1.axis('equal')  # Equal aspect ratio ensures that pie is drawn as a circle.\\n\\n\\n# Title and style\\n\\nplt.title('Marks obtained in an exam', pad=20)\\n\\n\\n# Save the figure\\n\\nplt.savefig('imgs/phi-3-vision.jpg', format='jpg', bbox_inches='tight')\\n\\n```\\n\\n\\nThis code will create a pie chart with the given data, set the title, and save the figure as 'imgs/phi-3-vision.jpg'.\""
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# The variable 'code' now contains the complete generated code as a string\n",
    "code\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Find the starting index of the Python code block within the generated code\n",
    "# The index is set to the position right after '```python'\n",
    "begin = code.index('```python') + 9\n",
    "\n",
    "# Slice the code string from the starting index to the end\n",
    "code = code[begin:]\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Find the ending index of the Python code block within the generated code\n",
    "# The index is set to the position of the closing '```'\n",
    "end = code.index('```')\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Slice the code string to include only the content up to the ending index\n",
    "# This removes the closing '```' from the code block\n",
    "code = code[:end]\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "\"\\n\\nimport matplotlib.pyplot as plt\\n\\n\\n# Data to plot\\n\\nlabels = 'physics', 'chemistry', 'english', 'maths'\\n\\nsizes = [25, 20, 15, 30]\\n\\ncolors = ['red', 'yellow', 'cyan', 'magenta']\\n\\n\\n# Plot\\n\\nfig1, ax1 = plt.subplots()\\n\\nax1.pie(sizes, labels=labels, autopct='%1.1f%%', startangle=140, colors=colors)\\n\\nax1.axis('equal')  # Equal aspect ratio ensures that pie is drawn as a circle.\\n\\n\\n# Title and style\\n\\nplt.title('Marks obtained in an exam', pad=20)\\n\\n\\n# Save the figure\\n\\nplt.savefig('imgs/phi-3-vision.jpg', format='jpg', bbox_inches='tight')\\n\\n\""
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# The variable 'code' now contains the cleaned Python code as a string\n",
    "code"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Import the subprocess module to allow for spawning new processes,\n",
    "# connecting to their input/output/error pipes, and obtaining their return codes\n",
    "import subprocess\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Run the generated Python code as a subprocess\n",
    "# The 'python' command is used with the '-c' option to execute the code string\n",
    "# The 'capture_output' parameter is set to True to capture the standard output and error\n",
    "result = subprocess.run([\"python\", \"-c\", code], capture_output=True)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "# Import the Image and display functions from the IPython.display module\n",
    "# These functions are used to display images in Jupyter notebooks\n",
    "from IPython.display import Image, display\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/jpeg": "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N35N/ARGTiOdOY5PofX2PNY1fVl5ZW2oWr2t5BHPBIMNHIuQa8y1L4PwHV4Z9OuSNPMmZreQncq9SFbvnpzyPU15GJwcqac4ar8f+Cfe5bxVRqx5cX7sl16P/J/gQ/DTw99i09tYuExPdDbCD1WP1/E/oB613tIsSwosSoEVAFCgYAA7Ypa/MMZiJ4itKpP7u3kfMYzFSxdeVaXX8F0CiiiuU5gooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACjqamhtpJj8owv941oQWscPI+ZvU17mWZDisc1K3LDu/wBF1/LzMp1YxK1vYk4aXgf3avgBQABgDtS0V+jZflmHwFPkorXq+r/rsck5uT1CiiivQICiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAjkhjlGHUH371SlsGXmM7h6HrWjRXl4/J8Hjtasfe7rR/wDB+dy41JR2MNlZDhgQfQ0lbbIrjDKCPcVWksI25QlT+Yr4/GcI4mnrh5Ka7PR/5fijojiE9zNoqy9jMvQBh7GoGRkOGUj6ivnMRgcThv41Nx9Vp9+xspRezG0UUVyFBRRRQAUUUUAFFFFABRRUqW0z9Izj1PFa0qFWs+WlFyfkribS3IqKupp7H/WOB7CrUdtFH0QE+p5r38Jwvjq+tRKC89/uX62MpV4rbUzoraWX7q4HqelXYrGNOX+c+/SrVFfW4DhrB4W0prnl3e3yW333OeVaUvIAMDAooor6EyCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACgjPWiigCNreFusa/liomsYT0DD6GrNFcVXLcHW/iUov5IpTktmUzp0fZ2H1pv9nD/AJ6/+O1eorilw9lkt6S+9r8mV7Wfco/2cP8Anr/47SjTl7yH8BV2ikuHMsWvsvxl/mHtp9yoNPiHVnP41ItnAv8ABn6mp6K6aeUYCnrGjH7r/mJ1JPqNWNE+6qj6CnVWv9RsdLtjc6heW9pbg4MtxKsag/UkCsMeN9HXWri0nvrGGyS1guIr57tBHMZGkUKpPHHldic59q9CMIwVoqyIOloqnf6vpul26XGoajaWkDkBJLiZY1YnsCSAabda1pVjDHNd6nZW8UqGSN5Z1RXQYywJPIG4c+49aoC9RWfHrujy3Ftbx6rYvNdJ5lvGtwhaZf7yDOWHB5FNGtWkMN9PfXmn21vaTmFpftalV+VT+8JACN833eeMHPPABpUVzl/478NadLpgn1ey8nUWkWG5W5j8obFLEsxbGONuRn5iB3rQm8SaFbPsn1rTon4+V7pFPKhh1P8AdIb6HNAGnRVdr60VbZmuoALpgtuTIP3pILAL/eOATx2BNWKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigDkPFEL2/inQtZn0+4v9OtIriORLeAzNDK+zZL5ags3CuuQCRu9zVXTdNt9T8b6nqL6NLHZzaPBDCbm0MfWWcuuGHBPykjrgjPWu5ooA8fs9K1i1s/Cl9fHWbWCHQktH+yaelzNbzZBYPE8bsoZQoyF/gwa2dL8ORw6t4NWO0v57K0j1GTzL+2CNCzshXcoUKmcttGBx24r0eigDy6Pw9La+FLkW+kyx3S+KvtEQS3IcRC+GHUYzs8vJz0257VPc6X+61uW9g1aBl8Sfa7SazsjOwIt41Enl7W3p95cgHn0IyPSqKAPNFl1Zh4c1jVNKuGisdTufMNtp7iV4WhkRJWgXc6kkjIxnocCtzQNLjfxj4r1GfT2C3b2qxSzwFfMjFumQNw6A5BHrweldfSMoZSpzgjBwcGgDznwdY3cnih9OulJs/CavaWkhOfMaX5kP1SDYv/AzXo9UdK0ex0S0a2sIWjjaRpXLyNI7uerM7Esx6cknoKvUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFAH/2Q==",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "display(Image(filename='./imgs/phi-3-vision.jpg'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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PDw8ct1usWLFuHLlSo7lly9fBsDf3z/b8twGGly9ehUXFxe8vLzyzA9q6+3y5cts27bN0EoACjWMPTf+/v7UqFEjz+/N3SJcrFgx9u7dm+Px/A6mMDZzvj4AP/30k6HV8zBXrlyhf//+hIeHc/ToUYYNG8asWbMMjx85coSDBw+yePFievToYVh++vRpo+YWpieFyoaULl2a999/nxMnTmT7xXyQTqfDyckJR0dHw7KUlBS+/fbbx9rv6NGj8fb2ZsiQISQlJTFp0qRc1/P19eWVV17h0qVLDB48mKioKKpWrZrrui1atGDSpEns27cv2/VAS5cuRafT0axZs2zrr1q1iqlTpxoKb0JCAr/99huNGzc2HKerq6vhWO93txDfffyub775Jr8vQb60b9+edevWUaFCBYoWLZrnes2aNWPlypX8+uuv2br/vv/+e6PmyS9zvT5t2rTBycmJM2fO8PLLLz903aysLDp37oxOp2P9+vUsW7aMYcOG0bRpUzp27GjW3ML0pFDZmM8+++yR67Rr147PP/+cLl268M4773Dz5k2mTZuW4xe6IN599128vLx45513SExMZNasWYZzFU888QR16tShePHinD9/npkzZxIUFESlSpXy3N6QIUNYunQp7dq1Y/z48QQFBbF27Vq+/vpr+vbtm+OcmaOjI61atWLo0KHo9XomT55MfHx8tqH0d89ffPHFF/To0QNnZ2dCQ0Np2LAhRYsWpU+fPnz88cc4OzuzbNkyDh48+NivR27Gjx/P5s2badiwIYMGDSI0NJTU1FSioqJYt24dc+bMoUyZMnTv3p0ZM2bQvXt3Jk6cSKVKlVi3bh0bN240ap78MtfrExwczPjx4/nwww85e/Yszz77LEWLFuXatWvs3bsXT09Pw/fz448/ZufOnWzatInAwEDee+89tm/fzltvvUWtWrUICQmhSpUqVKhQgREjRqAoCn5+fvz2229s3rzZqLmF6clgCjvUvHlzw6CLDh068OGHH/LKK68wYsSIQm33rbfeYtmyZcyZM4e33noLvV5Ps2bN2LFjB3369KFVq1aMHj2aFi1asH379jzP1QAUL16cXbt20bx5c0aOHEn79u3ZuHEjU6ZM4csvv8yx/oABA2jVqhWDBg2iS5cuZGZmsnbtWp5++mnDOk2bNmXkyJH89ttvNGrUiLp16/Lff/9R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",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Display the image located at the specified file path\n",
    "# The Image function from IPython.display is used to create an image object\n",
    "# The display function is used to render the image in the output cell\n",
    "display(Image(filename='./imgs/demo.png'))\n"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "base",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
